package com.miaosmart.service;


import com.miaosmart.dto.ModelDTO;
import com.miaosmart.dto.resp.CreateSessionRespDTO;
import com.miaosmart.dto.resp.GetSessionsRespDTO;
import reactor.core.publisher.Flux;

import java.util.List;

/**
 * 聊天服务接口
 */
public interface ChatService {
    /**
     * 创建新会话
     */
    CreateSessionRespDTO createSession(String title);

    /**
     * 获取会话列表
     */
    List<GetSessionsRespDTO> getSessions();

    /**
     * 获取单个会话详情
     */
    CreateSessionRespDTO getSession(Long sessionId);



    /**
     * 获取可用模型列表
     */
    List<ModelDTO> getModels();

    /**
     * 切换模型
     */
    void switchModel(Long sessionId, ModelDTO model);

    /**
     * 更新会话标题
     */
    void updateSessionTitle(Long sessionId, String title);

    /**
     * 删除会话
     */
    void deleteSession(Long sessionId);

    /**
     * @param
     * @return {@code MessageRespDTO }
     * @Description: 发送消息
     */

//    MessageRespDTO sendMessage(Long sessionId, SendMessageReqDTO requestParam);


    /**
     * 流式发送消息
     * @param sessionId 会话ID
     * @param requestParam 请求参数
     * @return 消息流
     */
    Flux<String> streamMessage(Long sessionId, String content);

    /**
     * 保存文件消息
     * @param sessionId 会话ID
     * @param fileName 文件名
     * @param fileUrl 文件URL
     */
    void saveFileMessage(Long sessionId, String fileName, String fileUrl);

}